﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using System.Xml.Linq;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2503Data
    {
        /// <summary>
        /// 人员编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_no")]
        public string PsnNo { get; set; }

        /// <summary>
        /// 险种类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "insutype")]
        public string Insutype { get; set; }

        /// <summary>
        /// 门慢门特病种目录代码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "opsp_dise_code")]
        public string OpspDiseCode { get; set; }

        /// <summary>
        /// 门慢门特病种名称
        /// 参数类型：字符型
        /// 参数长度：300
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "opsp_dise_name")]
        public string OpspDiseName { get; set; }

        /// <summary>
        /// 联系电话
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "tel")]
        public string Tel { get; set; }

        /// <summary>
        /// 联系地址
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "addr")]
        public string Addr { get; set; }

        /// <summary>
        /// 参保机构医保区划
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "insu_optins")]
        public string InsuOptins { get; set; }

        /// <summary>
        /// 鉴定定点医药机构编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "ide_fixmedins_no")]
        public string IdeFixmedinsNo { get; set; }

        /// <summary>
        /// 鉴定定点医药机构名称
        /// 参数类型：字符型
        /// 参数长度：200
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "ide_fixmedins_name")]
        public string IdeFixmedinsName { get; set; }

        /// <summary>
        /// 医院鉴定日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "hosp_ide_date")]
        public string HospIdeDate { get; set; }

        /// <summary>
        /// 诊断医师编码
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "diag_dr_codg")]
        public string DiagDrCodg { get; set; }

        /// <summary>
        /// 诊断医师姓名
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "diag_dr_name")]
        public string DiagDrName { get; set; }

        /// <summary>
        /// 开始日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "begndate")]
        public string Begndate { get; set; }

        /// <summary>
        /// 结束日期
        /// 参数类型：日期型
        /// 参数长度：
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "enddate")]
        public string Enddate { get; set; }

        /// <summary>
        /// 手术时间
        /// 参数类型：字符型
        /// 参数长度：4000
        /// 代码标识：
        /// 是否必填：
        /// 扩展字段，传入时间的时候采用格式：yy-MM-dd
        /// </summary>
        [DataMember(Name = "exp_content")]
        public string ExpContent { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2503InputModel
    {
        [DataMember(Name = "data")]
        public SI2503Data SI2503Data { get; set; }
    }

    /// <summary>
    /// 2503
    /// 人员慢特病备案
    /// </summary>
    [DataContract]
    public class SI2503RequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI2503InputModel Input { get; set; }

        public SI2503RequestModel(MedicalInsuranceOption medicalInsuranceOption,
            SI2503Data si2503Data) : base(medicalInsuranceOption)
        {
            Infno = "2503";
            Input = new SI2503InputModel();
            Input.SI2503Data = si2503Data;
        }
    }
}
